package com.conselheiro.web.persistence.webdao;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.conselheiro.web.entidade.Avaliacao;
import com.conselheiro.web.entidade.Conselho;

public class AvaliacaoWebDAO extends WebDAO<Avaliacao> {

	@Override
	protected Class<Avaliacao> getClasse() {
		return Avaliacao.class;
	}

	public int getMediaAvaliacao(Conselho conselho) {
		EntityManager entityManager = getEntityManager();
		try {
			Query query = entityManager.createQuery("SELECT AVG(o.valor) FROM "
					+ getClasse().getSimpleName()
					+ " o WHERE o.conselho = :conselho");
			query.setParameter("conselho", conselho);
			return ((Double) query.getSingleResult()).intValue();
		} finally {
			entityManager.close();
		}
	}

	public Avaliacao getAvaliacao(String login, Conselho conselho) {
		EntityManager entityManager = getEntityManager();
		try {
			Query query = entityManager.createQuery("SELECT o FROM "
					+ getClasse().getSimpleName()
					+ " o WHERE o.conselho = :conselho AND o.usuario.login = :login");
			query.setParameter("conselho", conselho).setParameter("login", login);
			return (Avaliacao) query.getSingleResult();
		} catch (Exception e) {
//			e.printStackTrace();
			return null;
		} finally {
			entityManager.close();
		}
	}

}
